<?php

/**
 * Description of mi_seleccion
 *
 * La seleccion funciona a través de un array guardado en los datos de la session
 * del visitante.
 *
 * cada vez que el usuario agrega un favorito va a dar aqui, cuando pide el listado.
 * estas sessiones se buscan en la base de datos.
 *
 * y asi se muestran tantan.
 *
 * @author daniel
 */
class Mi_seleccion extends Controller {

	/**
	 * clave del array
	 */
	private $seleccion_array;

	function Mi_seleccion() {
		parent::Controller();

        // 2 model necesarios para el buscador principal
        $models = array( "propiedades/propiedades_model", "buscadores/buscadores_model" );
		$this->load->model($models);

		$this->load->library("session");
		$this->load->library("autenticacion");

		$this->seleccion_array = "_array_mi_seleccion_";
	}

	function listar($limit = FALSE, $offset = 0) {
		$data["listado_propiedades"]["propiedades"] = array();

		if ($this->_array_exists()) {
			$ids = $this->_get_array();
			$propiedades = $this->propiedades_model->buscar_propiedades($ids);
			$data["listado_propiedades"]["propiedades"] = $propiedades;
		}

        // 2 lineas para agregar el buscador y set de atributo limit y offset
        $data["datos_para_buscador_simple"] = $this->buscadores_model->datos_para_buscador_simple();
        $data["datos_para_listado_de_propiedades"]["propiedades"] = $this->propiedades_model->listar_todas($limit, $offset);

		$this->load->view("mi_seleccion/listar", $data);
	}

	function agregar($id = FALSE) {
		if ($id === FALSE) {
			echo "Imposible agregar propiedad.";
			return;
		}

		$this->_add_to_array($id);
		echo "Propiedad agregada.";
	}

	/**
	 * retorna true si el array existe
	 */
	function _array_exists() {
		$array = $this->session->userdata($this->seleccion_array);

		if ($array === FALSE) {
			return FALSE;
		}

		return TRUE;
	}

	/**
	 * crea el array, si existia un array bajo la llave seleccion_array
	 * lo sobreescribe
	 */
	function _create_array() {
		$this->session->set_userdata($this->seleccion_array, array());
	}

	/**
	 * retorna el array, creandolo si no existe
	 */
	function _get_array() {
		if (!$this->_array_exists()) {
			$this->_create_array();
		}

		return $this->session->userdata($this->seleccion_array);
	}

	/**
	 * agrega una id al array, esto claro, si la id no está
	 * si el array no existe, lo crea.
	 */
	function _add_to_array($id) {
		$array = $this->_get_array();

		if (!in_array($id, $array)) {
			$array[] = $id;
		}

		$this->session->set_userdata($this->seleccion_array, $array);
	}

	/**
	 * retorna true si el array existe
	 */
	function unset_array() {

      $array = $this->session->unset_userdata($this->seleccion_array);

      redirect('mi_seleccion/listar', 'refresh');

	}

}
